package org.jeecg.modules.flowable.common.util.json;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

/**
 * Title: <br>
 * Desc: 对象转换，通过FASTJSON做的对象属性转换 Date: 2019年3月5日 <br>
 * Company: 联通（辽宁）产业互联网有限公司 <br>
 * 
 * @author zxd
 * @version 1.0.0.0
 */
public class ObjectConvert {

    /**
     * @Title: convert
     * @Description: 转换对象属性
     * @param source
     * @param clazz
     * @return 参数
     * @return T 返回类型
     * @throws @author
     *             zxd
     */
    public static <T> T convert(Object source, Class<T> clazz) {
        String jsonStr = JSONObject.toJSONString(source);
        T result = JSONObject.parseObject(jsonStr, clazz);
        return result;
    }

    /**
     * @Title: convert
     * @Description: 转换列表属性
     * @param source
     * @param clazz
     * @return 参数
     * @return List<T> 返回类型
     * @throws @author
     *             zxd
     */
    public static <T> List<T> convert(List<?> source, Class<T> clazz) {
        String jsonStr = JSONObject.toJSONString(source);
        List<T> result = JSONArray.parseArray(jsonStr, clazz);
        return result;
    }

    /**
     * 转换为JSONObject
     * 
     * @param o
     * @return
     */
    public static JSONObject toJSONObject(Object o) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("key", o);
        return jsonObject.getJSONObject("key");
    }

    /**
     * 转换为JSONArray
     * 
     * @param o
     * @return
     */
    public static JSONArray toJSONArray(Object o) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("key", o);
        return jsonObject.getJSONArray("key");
    }
}
